#ifndef TRACERMANAGER_H
#define TRACERMANAGER_H

#include <QObject>
#include "qcustomplot.h"
#include <QList>

#include "mytracer.h"

class TracerManager : public QObject
{
    Q_OBJECT
public:
    // 构造函数
    explicit TracerManager(QCustomPlot *_plot, QObject *parent = nullptr);

    // 析构函数
    ~TracerManager();
signals:


public slots:
    void do_mouseMove(QMouseEvent* event);

    void do_updataPosition(QMouseEvent* event);
public:
    void setTracerEnabled(bool enabled);

    void showTracer(bool show); // 设置是否显示鼠标追踪器

    bool isShowTracer(); // 是否显示鼠标追踪器

    void updateMouseLabelPosition(QCPItemText *label, const double &x, const double &y);

private:
    friend class MyTracer; // 声明友元类
    friend class MyTraceLine; // 声明友元类

    bool m_enabled; // 是否使能追踪器
    bool m_isShowTracer;//是否显示追踪器（鼠标在图中移动，显示对应的值）
    MyTracer *m_xTracer;//x轴追踪器
    MyTracer *m_yTracer;//y轴追踪器

    //数据追踪器列表
    QList<MyTracer *> m_dataTracers;
    MyTraceLine *m_lineTracer;//直线追踪器
    QCPItemText *m_mouseLabel;// 鼠标标签

    // 图表类
    QCustomPlot *m_customPlot;

    // 设置偏移量
    double m_offsetX = 0; // 水平偏移量
    double m_offsetY = 0; // 垂直偏移量
};

#endif // TRACERMANAGER_H
